package com.zenithmind.task.pojo.vo;

import lombok.Data;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 任务统计VO类
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
public class TaskStatisticsVO {

    /**
     * 总任务数
     */
    private Long totalTasks;

    /**
     * 待办任务数
     */
    private Long todoTasks;

    /**
     * 进行中任务数
     */
    private Long inProgressTasks;

    /**
     * 已完成任务数
     */
    private Long completedTasks;

    /**
     * 已取消任务数
     */
    private Long cancelledTasks;

    /**
     * 已暂停任务数
     */
    private Long pausedTasks;

    /**
     * 逾期任务数
     */
    private Long overdueTasks;

    /**
     * 今日任务数
     */
    private Long todayTasks;

    /**
     * 本周任务数
     */
    private Long weekTasks;

    /**
     * 本月任务数
     */
    private Long monthTasks;

    /**
     * 完成率（百分比）
     */
    private BigDecimal completionRate;

    /**
     * 逾期率（百分比）
     */
    private BigDecimal overdueRate;

    /**
     * 平均完成时间（天）
     */
    private BigDecimal avgCompletionDays;

    /**
     * 总预估工时
     */
    private BigDecimal totalEstimatedHours;

    /**
     * 总实际工时
     */
    private BigDecimal totalActualHours;

    /**
     * 工时偏差率（百分比）
     */
    private BigDecimal hoursDeviationRate;

    /**
     * 优先级分布
     */
    private Map<String, Long> priorityDistribution;

    /**
     * 状态分布
     */
    private Map<String, Long> statusDistribution;

    /**
     * 分类分布
     */
    private Map<String, Long> categoryDistribution;

    /**
     * 项目分布
     */
    private Map<String, Long> projectDistribution;

    /**
     * 负责人分布
     */
    private Map<String, Long> assigneeDistribution;

    /**
     * 完成趋势（最近30天）
     */
    private List<TrendData> completionTrend;

    /**
     * 创建趋势（最近30天）
     */
    private List<TrendData> creationTrend;

    /**
     * 工时趋势（最近30天）
     */
    private List<TrendData> hoursTrend;

    /**
     * 趋势数据
     */
    @Data
    public static class TrendData {
        /**
         * 日期
         */
        private String date;

        /**
         * 数值
         */
        private Long value;

        /**
         * 标签
         */
        private String label;
    }

    /**
     * 个人统计信息
     */
    @Data
    public static class PersonalStats {
        /**
         * 我的任务数
         */
        private Long myTasks;

        /**
         * 我创建的任务数
         */
        private Long createdTasks;

        /**
         * 我关注的任务数
         */
        private Long followedTasks;

        /**
         * 我参与的任务数
         */
        private Long participatedTasks;

        /**
         * 本周完成任务数
         */
        private Long weekCompletedTasks;

        /**
         * 本月完成任务数
         */
        private Long monthCompletedTasks;

        /**
         * 平均每日工时
         */
        private BigDecimal avgDailyHours;

        /**
         * 效率评分
         */
        private BigDecimal efficiencyScore;
    }

    /**
     * 团队统计信息
     */
    @Data
    public static class TeamStats {
        /**
         * 团队成员数
         */
        private Long memberCount;

        /**
         * 团队任务数
         */
        private Long teamTasks;

        /**
         * 团队完成率
         */
        private BigDecimal teamCompletionRate;

        /**
         * 团队平均工时
         */
        private BigDecimal teamAvgHours;

        /**
         * 最活跃成员
         */
        private String mostActiveMember;

        /**
         * 成员效率排行
         */
        private List<MemberEfficiency> memberEfficiencyRanking;
    }

    /**
     * 成员效率
     */
    @Data
    public static class MemberEfficiency {
        /**
         * 成员ID
         */
        private String memberId;

        /**
         * 成员名称
         */
        private String memberName;

        /**
         * 完成任务数
         */
        private Long completedTasks;

        /**
         * 完成率
         */
        private BigDecimal completionRate;

        /**
         * 平均完成时间
         */
        private BigDecimal avgCompletionTime;

        /**
         * 效率评分
         */
        private BigDecimal efficiencyScore;
    }
}
